<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ClientController
 *
 * @author Maciej
 */
class ClientController extends PanelController {
    
    public $metaKeywords = 'Panel Klienta';
    public $metaDescription = 'Panel Klienta';
    public $pageTitle = 'Panel Klienta';
    
    public $menu = array(
        array(
            'name' => 'Główny panel',
            'link' => 'client/index',
        ),
        array(
            'name' => 'Zmiana hasła',
            'link' => 'client/changepassword',
        ),
        
    );
    
    
    public function actionIndex() {
        $records = Yii::app()->db->createCommand()
                    ->select('')
                    ->from('konto k')
                    ->leftJoin('konto__uzytkownicy ku', 'k.id_konto = ku.id_konto')
                    ->leftJoin('rodzaj_konta rk', 'k.id_rodzaj_konta = rk.id_rodzaj_konta')
                    ->where('ku.id_uzytkownika =:id', array(':id'=> Yii::app()->user->ID))
                    ->queryAll();
        
        $pageNumber = 0;
        $pageSize = 20;
        
        if(isset($_GET['pageNumber'])){
            $pageNumber = $pageSize * ($_GET['pageNumber']-1);
        }
        $count = count(Yii::app()->db->createCommand("select * 
                                                    from historia_operacji ho
                                                    left join konto__uzytkownicy ku on ku.id_konto = ho.konto
                                                    where
                                                    ku.id_uzytkownika = ".Yii::app()->user->ID
        )->queryAll());
        
        $history = Yii::app()->db->createCommand("select * 
                                                    from historia_operacji ho
                                                    left join konto__uzytkownicy ku on ku.id_konto = ho.konto
                                                    where
                                                    ku.id_uzytkownika = ".Yii::app()->user->ID." ORDER BY ho.data_op DESC LIMIT ".$pageSize." OFFSET ".$pageNumber
        )->queryAll();
        
        $this->render('index', array('accounts' => $records, 'history' => $history, 'pager' => ceil($count/$pageSize), 'pageSize' => $pageSize,'pageNumber' => ($pageNumber/$pageSize)));
    }
    
    public function actionAccount() {
        if(!isset($_GET['id'])){
            $this->redirect(array('client/index'));
        }
        
        $record = Yii::app()->db->createCommand()
                    ->select('*, rk.nazwa as NazwaKonta')
                    ->from('konto k')
                    ->leftJoin('konto__uzytkownicy ku', 'k.id_konto = ku.id_konto')
                    ->leftJoin('rodzaj_konta rk', 'k.id_rodzaj_konta = rk.id_rodzaj_konta')
                    ->leftJoin('waluty w', 'k.id_waluty = w.id_waluty')
                    ->where('ku.id_uzytkownika =:id AND ku.id_konto =:idKonto', array(':id'=> Yii::app()->user->ID, ':idKonto' => $_GET['id']))
                    ->queryRow();
        
        $sumBooked = Yii::app()->db->createCommand("SELECT sumamountaccountpostedfun(".$_GET['id'].")")->queryAll();
        $sum = Yii::app()->db->createCommand("SELECT sumamountaccountallfun(".$_GET['id'].")")->queryAll();
        $pageNumber = 0;
        $pageSize = 20;
        
        if(isset($_GET['pageNumber'])){
            $pageNumber = $pageSize * ($_GET['pageNumber']-1);
        }
        $count = count(Yii::app()->db->createCommand("select * 
                                                    from historia_operacji ho
                                                    left join konto__uzytkownicy ku on ku.id_konto = ho.konto
                                                    where
                                                    ku.id_uzytkownika = ".Yii::app()->user->ID
        )->queryAll());
        
        $history = Yii::app()->db->createCommand("select * 
                                                    from historia_operacji ho
                                                    left join konto__uzytkownicy ku on ku.id_konto = ho.konto
                                                    where
                                                    ho.konto = ".$_GET['id']." AND ku.id_uzytkownika = ".Yii::app()->user->ID." ORDER BY ho.data_op DESC LIMIT ".$pageSize." OFFSET ".$pageNumber
        )->queryAll();
        $this->render('account', array(
            'account' => $record, 
            'history' => $history, 
            'pager' => ceil($count/$pageSize), 
            'pageSize' => $pageSize,
            'pageNumber' => ($pageNumber/$pageSize),
            'sum' => $sum[0]['sumamountaccountallfun'],
            'sumBooked' => $sumBooked[0]['sumamountaccountpostedfun'],));
    }
    
    public function actionTransfer() {
        if (!isset($_GET['id'])) {
            $this->redirect(array('client/index'));
        }

        $model = new TransferForm();
        
        $record = Yii::app()->db->createCommand()
                    ->select('')
                    ->from('konto k')
                    ->leftJoin('konto__uzytkownicy ku', 'k.id_konto = ku.id_konto')
                    ->leftJoin('rodzaj_konta rk', 'k.id_rodzaj_konta = rk.id_rodzaj_konta')
                    ->where('ku.id_uzytkownika =:id AND ku.id_konto =:idKonto', array(':id'=> Yii::app()->user->ID, ':idKonto' => $_GET['id']))
                    ->queryRow();

        if (isset($_POST['TransferForm'])) {
            $model->attributes = $_POST['TransferForm'];

            if ($model->validate()) {
                $result = $model->addInnerTransfer($record['numer_rachunku'], Yii::app()->user->ID);
                if ($result === 0) {
                    $this->redirect(array('client/index'));
                } else{
                    $model->addError('title', 'Nie udało się wykonać przelewu.');
                }
            }
        }
        $this->render('transfer', array('model' => $model));
    }

    public function actionChangePassword(){
        $model = new ChangePasswordForm();
        
        if(isset($_POST['ChangePasswordForm']))
        {
            $model->attributes = $_POST['ChangePasswordForm'];
            
            if($model->validate()){
                
                if($model->changePassword(Yii::app()->user->id, 0) !== 1){
                    $model->addError('oldpassword','Nie udało się zmienić hasła.');
                }
            }
        }

        $this->render('application.views.components.change_password', array('model' => $model));
    }
}
